package cn.biplam.common.bean.md;

import java.io.Serializable;

import cn.biplam.common.bean.Bean;
import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.common.wrapper.UserInfo;
import cn.biplam.common.wrapper.sqlresult.SqlResult;

/**
 * 主题下的模型表操作类。
 * 根据模型对象的类型和主题，取主题下所有模型表信息
 * @author WangSong 2009-6-23下午05:37:13
 * @version 1.0
 */
public abstract class MdThemeTableAll extends Bean implements Serializable{

	/**Md对象信息 */
	protected SqlResult sr;
	/**Md对象类型 */
	protected String modelType;
	/**用户信息 */
	protected String mUser;
	/**结果集游标信息 */
	protected int icount=-1;
	/**主题id */
	protected String themeId;
	/**主题下的表 */
	protected String themeTables;
	
	/** 表id字段名 */
	protected String OID;
	/** 表名称字段名 */
	protected String TABLE_NAME;
	/** 表中文名字段名 */
	protected String TABLE_CNAME;
	/** 表说明字段名 */
	protected String TABLE_DESC;
	/**
	 * 是否还有对象
	 * @return
	 */
	public abstract boolean haveNext();

	/**
	 * 移动指针到下一个
	 */
	public abstract void next();

	/**
	 * 取模型对象的表Id
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getID() throws ErrorMessage;

	/**
	 * 取模型对象的表名称
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getName() throws ErrorMessage;

	/**
	 * 取模型对象的表中文名称
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getCnName() throws ErrorMessage;

	/**
	 * 取模型对象的表说明
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getDesc() throws ErrorMessage;

	/**
	 * 取模型对象的表说明详细 表名(表中文名)
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getNameDesc() throws ErrorMessage;

	/**
	 * 对象大小
	 * @return
	 */
	public abstract int size();
	
	/**
	 * 新建实例
	 * @param mUser 用户信息
	 * @param modelType 模型对象类型
	 * @param themeId 主题id
	 * @return 实例
	 * @throws ErrorMessage
	 */
	public static MdThemeTableAll getNewInstance(UserInfo mUser,String modelType,String themeId) throws ErrorMessage{
		return (MdThemeTableAll)get(MdThemeTableAll.class.getSimpleName(), mUser,modelType,themeId);
	}
	
	/** 表id字段名 */
	public abstract String getOID();
	
	/** 表名称字段名 */
	public abstract String getTABLE_NAME();
	
	/** 表中文名字段名 */
	public abstract String getTABLE_CNAME();
	
	/** 表说明字段名 */
	public abstract String getTABLE_DESC();

}